package com.hsj.demo.service;

import com.hsj.demo.dao.LostInfoDao;
import com.hsj.demo.entity.LostInfo;
import com.hsj.demo.entity.User;
import com.hsj.demo.utils.ConstUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Service
public class LostInfoService extends CurdService<LostInfoDao, LostInfo> {
    @Autowired
    private LostInfoDao lostInfoDao;

    public List<LostInfo> findByUserId(Integer userId){
        return lostInfoDao.findByUserId(userId);
    }

    public List<LostInfo> findByKeyword(String keyword){
        return lostInfoDao.findByKeyword(keyword);
    }

    public String insert(MultipartFile file, LostInfo lostInfo){
        lostInfoDao.insert(saveFile(file,lostInfo));
        return "添加成功";
    }

    public String update(MultipartFile file, LostInfo lostInfo){
        lostInfoDao.update(saveFile(file,lostInfo));
        return "修改成功";
    }

    public LostInfo saveFile(MultipartFile file, LostInfo lostInfo){
        // 先设定一个放置上传文件的文件夹(该文件夹可以不存在，下面会判断创建)
        String deposeFilesDir = ConstUtil.getConstUtil().getPhotoUrl();
        // 获取当前时间
        Date nowTime = new Date();
        if(file!=null){
            // 获取附件原名(有的浏览器如chrome获取到的是最基本的含 后缀的文件名,如myImage.png)
            // 获取附件原名(有的浏览器如ie获取到的是含整个路径的含后缀的文件名，如C:\\Users\\images\\myImage.png)
            String fileName = file.getOriginalFilename();
            // 如果是获取的含有路径的文件名，那么截取掉多余的，只剩下文件名和后缀名
            int index = fileName.lastIndexOf("\\");
            if (index > 0) {
                fileName = fileName.substring(index + 1);
            }

            // split()中放正则表达式; 转义字符"\\."代表 "."
            String[] fileNameSplitArray = fileName.split("\\.");
            // 加上时间,防止附件重名覆盖原文件
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");//设置日期格式
            fileName = ConstUtil.getConstUtil().getLostInfoPhotoUrl()+lostInfo.getUser().getUsername() +
                    df.format(nowTime) + "." + fileNameSplitArray[1];// new Date()为获取当前系统时间

            // 根据文件的全路径名字(含路径、后缀),new一个File对象dest
            File dest = new File(deposeFilesDir + fileName);
            // 如果该文件的上级文件夹不存在，则创建该文件的上级文件夹及其祖辈级文件夹;
            if (!dest.getParentFile().exists()) {
                dest.getParentFile().mkdirs();
            }
            try {
                // 将获取到的附件file,transferTo写入到指定的位置(即:创建dest时，指定的路径)
                file.transferTo(dest);
            }catch (IOException e) {
                e.printStackTrace();
            }
            lostInfo.setImage(fileName);
        }
        lostInfo.setReleaseTime(nowTime);
        lostInfo.setIsPass('0');
        return lostInfo;
    }
}
